package com.cml.rpc.server;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 自动
 * @author cml
 * @create 2021/7/21 10:09
 */
public class ServiceProvider {
    /**
     * 服务容器，保存服务端的提供的服务;相当于服务中心，后面用zookeeper实现
     */
    private static Map<String,Object> serviceProvider = new HashMap<>();

    public ServiceProvider() { }

    /**
     * 添加服务
     * @param service
     */
    public void putService(Object service) {
        // 通过反射将service实现的所有接口都添加到serverProvider服务提供容器里面
        Class<?>[] interfaces = service.getClass().getInterfaces();
        for (Class clazz : interfaces) {
            serviceProvider.put(clazz.getName(), service);
        }
    }

    public static Map<String, Object> getServiceProvider() {
        return serviceProvider;
    }

    public void putService(List serviceList) {
        // 通过反射将service实现的所有接口都添加到serverProvider服务提供容器里面'
        serviceList.forEach(service -> {
            Class<?>[] interfaces = service.getClass().getInterfaces();
            for (Class clazz : interfaces) {
                serviceProvider.put(clazz.getName(), service);
            }
        });
    }

    /**
     * 获取服务
     * @param interfaceName
     * @return
     */
    public Object getService(String interfaceName) {
        Object server = serviceProvider.get(interfaceName);
        return server;
    }
}
